package initialize

import (
	"fmt"
	"ksirGo/global"
	"ksirGo/model"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

func Gorm() *gorm.DB {
	switch global.CONFIG.System.DBType {
	case "mysql":
		return Mysql()
	// case "pgsql":
	// 	return GormPgSql()
	default:
		return Mysql()
	}
}

func Mysql() *gorm.DB {
	m := global.CONFIG.Mysql
	if m.DBName == "" {
		return nil
	}
	// fmt.Println("mysql配置：", m.Dsn())
	mysqlConfig := mysql.Config{
		DSN:                       m.Dsn(), // DSN data source name
		DefaultStringSize:         191,     // string 类型字段的默认长度
		SkipInitializeWithVersion: false,   // 根据版本自动配置
	}
	if db, err := gorm.Open(mysql.New(mysqlConfig), &gorm.Config{}); err != nil {
		fmt.Println("mysql连接失败：", err.Error())
		return nil
	} else {
		sqlDB, _ := db.DB()
		sqlDB.SetMaxIdleConns(m.MaxIdleConns)
		sqlDB.SetMaxOpenConns(m.MaxOpenConns)
		Generator(db)
		fmt.Println("mysql连接成功！")
		return db
	}
}

// 生成数据库表
func Generator(db *gorm.DB) {
	db.AutoMigrate(&model.User{})
}
